const cloud = require('wx-server-sdk');

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
});
const db = cloud.database();
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
  let whereData = {}
  // 查询自己发布的产品
  if (event.openid) {
    whereData.openid = event.openid
  }
  // 我卖出的
  if (event.isSell) {
    whereData.openid = event.openid
    whereData.buyId = _.exists(true)
  }
  // 我收藏的
  if (event.isLike) {
    whereData.likeList = _.in([event.likeid])
  }
  // 主页不查询已卖出的产品
  if (event.index) {
    whereData.buyId = _.exists(false)
  } 
  // 查询商品类型 （买入/卖出）
  if (event.proType) {
    whereData.proType = event.proType
  }
  // 查询商品是否被购买
  if (event.buyId) {
    whereData.buyId = event.buyId
  }

  // 查询关键字
  if (event.search) {
    // whereData.content = db.RegExp({
    //   regexp: event.search,
    //   options: 'i',
    // })
    whereData.$or = [
      { 
        title: db.RegExp({
          regexp: event.search,
          options: 'i',
        })
      },
      {
        content: db.RegExp({
          regexp: event.search,
          options: 'i',
        })
      },
    ]
  }

  // 搜索价格区间
  // 仅最低价
  if (event.price && !event.price2) {
    whereData.price = _.gte(event.price)
  }
  if (!event.price && event.price2) {
    whereData.price = _.lte(event.price2)
  }
  if (event.price && event.price2) {
    whereData.price = _.gte(event.price).and(_.lte(event.price2))
    // whereData.$and = [
    //   {
    //     price: _.gte(event.price)
    //   },
    //   {
    //     price: _.lte(event.price2)
    //   }
    // ]
  }

  // 搜索校区地点
  if (event.school) {
    whereData.school = event.school
  }
  // 搜索交以形式
  if (event.deal) {
    whereData.deal = event.deal
  }
  // 搜索分类
  if (event.classify) {
    whereData.classify = event.classify
  }
  let count1 = await db.collection("productList").aggregate() //选择我的产品表
  .lookup({
    from:"userList", //把用户表关联上
    localField: 'openid', //产品表的关联字段
    foreignField: 'openid', //用户表的关联字段
    as: 'userInfo' //匹配的结果作为userInfo相当于起个别名
  })
  .match(whereData)
  .count('expensiveCount')
  .end()
  console.log('count1', count1)
  
  if (count1.list.length == 0) {
    return {
      list: []
    }
  }
  let count = count1.list[0].expensiveCount
  console.log('count', count)
  
  let all = []
  for (let i = 0; i < count; i += 20) { //自己设置每次获取数据的量
    let list = await db.collection("productList").aggregate() //选择我的产品表
    .lookup({
      from:"userList", //把用户表关联上
      localField: 'openid', //产品表的关联字段
      foreignField: 'openid', //用户表的关联字段
      as: 'userInfo' //匹配的结果作为userInfo相当于起个别名
    })
    .match(whereData)
    .skip(i)
    .end()
    console.log('list', list.list)
    all = all.concat(list.list);
  }
  // 3,把组装好的数据一次性全部返回
  return {
    list: all
  };


}
